package com.crocodile.game17.service.impl;

import com.crocodile.game17.common.R;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.net.URL;

@Service
public class RunService {

    /**
     * 执行对应的游戏
     * @param id
     */
    public R<String> run(int id) {
//        String strcmd = "cmd /c start " + RunService.class.getResource("/bat/script.bat") ;  //调用我们在项目目录下准备好的bat文件，如果不是在项目目录下，则把“你的文件名.bat”改成文件所在路径。
//        run_cmd(strcmd);  //调用上面的run_cmd方法执行操作

        switch (id){
            case 1:
                run_exe("cmd /c start " + RunService.class.getResource("/fish.exe"));
            break;
            case 2:
                run_exe("cmd /c start " + RunService.class.getResource("/moonSnake.exe"));
                break;
            case 3:
                run_exe("cmd /c start " + RunService.class.getResource("/GoldMiner.exe"));
                break;
            default:
                return R.error("启动失败",500);

        }



        return R.success("启动成功");
    }


    public static void run_exe(String strEXE){
        final Runtime runtime = Runtime.getRuntime();
        Process process = null;

        try {
            process = runtime.exec(strEXE);
        } catch (final Exception e) {
            System.out.println("Error exec!");
        }



    }

    /**
     * jar
     * @param strcmd
     */
    public static void run_cmd(String strcmd) {
//
        Runtime rt = Runtime.getRuntime(); //Runtime.getRuntime()返回当前应用程序的Runtime对象
        Process ps = null;  //Process可以控制该子进程的执行或获取该子进程的信息。
        try {
            ps = rt.exec(strcmd);   //该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序，并返回与该子进程对应的Process对象实例。
            ps.waitFor();  //等待子进程完成再往下执行。
        } catch (IOException e1) {
            e1.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        int i = ps.exitValue();  //接收执行完毕的返回值
        if (i == 0) {
            System.out.println("执行完成.");
        } else {
            System.out.println("执行失败.");
        }

        ps.destroy();  //销毁子进程
        ps = null;
    }


}
